/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package imagemanip;

import fr.univnantes.alma.arbres.ArbreTM;
import imagemanip.png.PNG;
import imagemanip.structures.ColorEditor;
import imagemanip.structures.OcTreeManager;
import imagemanip.structures.QuadTreeManager;
import java.awt.Color;

/**
 *
 * @author judu
 */
public class Main {

    /**
     * à changer
     */
    public static final String cheminEntree = "/home/judu/images/rtsr.png";
    public static final String cheminSortie = "/home/judu/images/rtsr_sortie.png";

    public static final int pourcentageOcTree = 10;
    public static final int distance = 10;


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        // TODO code application logic here

        System.out.println("Début imagemanip");

        QuadTreeManager qtm = new QuadTreeManager();

        /**
         * Mettre ici le chemin vers l'image de départ.
         */
        Color[][] t2 = PNG.importImage(Main.cheminEntree);


        qtm.importBitMapTable(t2);


        System.out.println("Début reducPalette");
        OcTreeManager otm = qtm.getOtm();
        try {
            /**
             * Ici, on peut réduire la palette plus ou moins.
             */
            otm.reductionPaletteParPourcentage(Main.pourcentageOcTree);
        } catch (Exception ex) {
            
        }

        qtm.setOtm(otm);

        ArbreTM<Color> a = qtm.getQt();

        System.out.println("Début compression");
        /**
         * Ici, on peut changer la distance utilisée pour la compression.
         */
        ColorEditor.setDist(Main.distance);

        qtm.compresse();

        System.out.println("Compression effectuée.");

        System.out.println("Début export");
        Color[][] s = qtm.exportBitMapTable();


        PNG.exportImage(Main.cheminSortie, s);
        System.out.println("Fin du programme, image écrite.");


    }

    public static void printTableau(Color[][] s) {

        if (s != null) {
            System.out.println("largeur : " + s.length);
            System.out.println("hauteur : " + s[0].length);


            for (int i = 0; i < s.length; ++i) {
                for (int j = 0; j < s[0].length; ++j) {
                    if(s[i][j] != null){
                        System.out.print(s[i][j].toString()+" ");
                    } else {
                        System.out.print("null ");
                    }
                }
                System.out.println();
            }
        } else {
            System.out.println("Tableau null");
        }
    }
}
